/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package andisoft.uniandes.ecos.runt.persistence;

import andisoft.uniandes.ecos.runt.services.RegistroConductoresBO;
import java.io.File;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;



/**
 *
 * @author Hrey
 */
@Entity
@Table(name = "RNC")
@NamedQueries({
    
    @NamedQuery(name = "RNC.findAllConductores", query = "SELECT r FROM RNC r"),
    @NamedQuery(name = "RNC.findByNombres", query = "SELECT r FROM RNC r WHERE r.nombres = :nombres"), 
    @NamedQuery(name = "RNC.findByApellidos", query = "SELECT r FROM RNC r WHERE r.apellidos = :apellidos"), 
    @NamedQuery(name = "RNC.findByTipoidentificacion", query = "SELECT r FROM RNC r WHERE r.tipoidentificacion = :tipoidentificacion"), 
    @NamedQuery(name = "RNC.findByFechanacimiento", query = "SELECT r FROM RNC r WHERE r.fechanacimiento = :fechanacimiento"), 
    @NamedQuery(name = "RNC.findByGenero", query = "SELECT r FROM RNC r WHERE r.genero = :genero"), 
    @NamedQuery(name = "RNC.findByTelefono", query = "SELECT r FROM RNC r WHERE r.telefono = :telefono"), 
    @NamedQuery(name = "RNC.findByDireccionresidencia", query = "SELECT r FROM RNC r WHERE r.direccionresidencia = :direccionresidencia"),
    @NamedQuery(name = "RNC.findByDepartamentoresidencia", query = "SELECT r FROM RNC r WHERE r.departamentoresidencia = :departamentoresidencia"), 
    @NamedQuery(name = "RNC.findByCiudadresidencia", query = "SELECT r FROM RNC r WHERE r.ciudadresidencia = :ciudadresidencia"), 
    @NamedQuery(name = "RNC.findByRh", query = "SELECT r FROM RNC r WHERE r.rh = :rh"), 
    @NamedQuery(name = "RNC.findByRestriccion", query = "SELECT r FROM RNC r WHERE r.restriccion = :restriccion"), 
    @NamedQuery(name = "RNC.findByNumerolicencia", query = "SELECT r FROM RNC r WHERE r.numerolicencia = :numerolicencia"), 
    @NamedQuery(name = "RNC.findByFechaexpedicion", query = "SELECT r FROM RNC r WHERE r.fechaexpedicion = :fechaexpedicion"), 
    @NamedQuery(name = "RNC.findByFechavigencia", query = "SELECT r FROM RNC r WHERE r.fechavigencia = :fechavigencia"), 
    @NamedQuery(name = "RNC.findByCentroensenanza", query = "SELECT r FROM RNC r WHERE r.centroensenanza = :centroensenanza"), 
    @NamedQuery(name = "RNC.findByCategoria", query = "SELECT r FROM RNC r WHERE r.categoria = :categoria"), 
    @NamedQuery(name = "RNC.findByFechaexpedicionextranjera", query = "SELECT r FROM RNC r WHERE r.fechaexpedicionextranjera = :fechaexpedicionextranjera"), 
    @NamedQuery(name = "RNC.findByNumerolicenciaextranjeria", query = "SELECT r FROM RNC r WHERE r.numerolicenciaextranjeria = :numerolicenciaextranjeria"), 
    @NamedQuery(name = "RNC.findByNombreconductor", query = "SELECT r FROM RNC r WHERE r.nombreconductor = :nombreconductor"), 
    @NamedQuery(name = "RNC.findByCedulaextranjeria", query = "SELECT r FROM RNC r WHERE r.cedulaextranjeria = :cedulaextranjeria"), 
    @NamedQuery(name = "RNC.findById", query = "SELECT r FROM RNC r WHERE r.id = :id")})
    
public class RNC implements Serializable {
    private static final long serialVersionUID = 1L;
    @Column(name = "NOMBRES", nullable = true)
    private String nombres;
    @Column(name = "APELLIDOS", nullable = true)
    private String apellidos;
    @Column(name = "TIPOIDENTIFICACION", nullable = true)
    private String tipoidentificacion;
    @Column(name = "NUMEROIDENTIFICACION", nullable = true)
    private String numeroidentificacion;
    @Column(name = "FECHANACIMIENTO", nullable = true)
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechanacimiento;
    @Column(name = "GENERO", nullable = true)
    private String genero;
    @Column(name = "TELEFONO", nullable = true)
    private String telefono;
    @Column(name = "DIRECCIONRESIDENCIA", nullable = true)
    private String direccionresidencia;
    @Column(name = "DEPARTAMENTORESIDENCIA", nullable = true)
    private String departamentoresidencia;
    @Column(name = "CIUDADRESIDENCIA", nullable = true)
    private String ciudadresidencia;
    @Column(name = "RH", nullable = true)
    private String rh;
    @Lob
    @Column(name = "FOTO")
    private Serializable foto;
    @Lob
    @Column(name = "HUELLADIGITAL")
    private Serializable huelladigital;
    @Column(name = "RESTRICCION", nullable = true)
    private String restriccion;
    @Column(name = "NUMEROLICENCIA", nullable = true)
    private String numerolicencia;
    @Column(name = "FECHAEXPEDICION")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaexpedicion;
    @Column(name = "FECHAVIGENCIA")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechavigencia;
    @Column(name = "CENTROENSENANZA", nullable = true)
    private String centroensenanza;
    @Column(name = "CATEGORIA")
    private String categoria;
    @Column(name = "FECHAEXPEDICIONEXTRANJERA")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaexpedicionextranjera;
    @Column(name = "NUMEROLICENCIAEXTRANJERIA")
    private String numerolicenciaextranjeria;
    @Column(name = "NOMBRECONDUCTOR")
    private String nombreconductor;
    @Column(name = "CEDULAEXTRANJERIA")
    private String cedulaextranjeria;
    @Id
    @GeneratedValue
    @Column(name = "ID", nullable = false)
    private BigDecimal id;

    public RNC() {
    }

    public RNC(BigDecimal id) {
        this.id = id;
    }

    public RNC(RegistroConductoresBO rncBO) {
        if (rncBO.getId()!= null)
            id = new BigDecimal(rncBO.getId());
        nombres = rncBO.getNombres();
        apellidos = rncBO.getApellidos();
        tipoidentificacion = rncBO.getTipoIdentificacion();
        numeroidentificacion = rncBO.getNumeroIdentificacion();
        fechanacimiento = rncBO.getFehaNacimiento();
        genero = rncBO.getGenero();
        telefono = rncBO.getTelefono();
        direccionresidencia = rncBO.getDireccionResidencia();
        departamentoresidencia = rncBO.getDepartamentoResidencia();
        ciudadresidencia = rncBO.getCiudadResidencia();
        rh = rncBO.getRh();
        restriccion = rncBO.getRestriccion();
        numerolicencia = rncBO.getNumeroLicencia();
        centroensenanza = rncBO.getCentroEnseñanza();
        categoria = rncBO.getCategoria();
        cedulaextranjeria = rncBO.getCedulaExtranjeria();
        fechaexpedicion = rncBO.getFechaExpedicion();
        fechaexpedicionextranjera = rncBO.getFechaExpedicionExtranjeria();
        fechavigencia = rncBO.getFechaVigencia();
        foto = rncBO.getFoto();
        huelladigital = rncBO.getHuellaDigital();
        nombreconductor = rncBO.getNombreConductor();
        numerolicenciaextranjeria = rncBO.getNumeroLicenciaExtranjeria();
    }

    public RNC(BigDecimal id, String nombres, String apellidos, String tipoidentificacion, Date fechanacimiento, String genero, String telefono, String direccionresidencia, String departamentoresidencia, String ciudadresidencia, String rh, String restriccion, String numerolicencia, String centroensenanza) {
        this.id = id;
        this.nombres = nombres;
        this.apellidos = apellidos;
        this.tipoidentificacion = tipoidentificacion;
        this.fechanacimiento = fechanacimiento;
        this.genero = genero;
        this.telefono = telefono;
        this.direccionresidencia = direccionresidencia;
        this.departamentoresidencia = departamentoresidencia;
        this.ciudadresidencia = ciudadresidencia;
        this.rh = rh;
        this.restriccion = restriccion;
        this.numerolicencia = numerolicencia;
        this.centroensenanza = centroensenanza;
    }

    public String getNombres() {
        return nombres;
    }

    public void setNombres(String nombres) {
        this.nombres = nombres;
    }

    public String getApellidos() {
        return apellidos;
    }

    public void setApellidos(String apellidos) {
        this.apellidos = apellidos;
    }

    public String getTipoidentificacion() {
        return tipoidentificacion;
    }

    public void setTipoidentificacion(String tipoidentificacion) {
        this.tipoidentificacion = tipoidentificacion;
    }
    
    public String getNumeroidentificacion() {
        return numeroidentificacion;
    }

    public void setNumeroidentificacion(String numeroidentificacion) {
        this.numeroidentificacion = numeroidentificacion;
    }

    public Date getFechanacimiento() {
        return fechanacimiento;
    }

    public void setFechanacimiento(Date fechanacimiento) {
        this.fechanacimiento = fechanacimiento;
    }

    public String getGenero() {
        return genero;
    }

    public void setGenero(String genero) {
        this.genero = genero;
    }

    public String getTelefono() {
        return telefono;
    }

    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    public String getDireccionresidencia() {
        return direccionresidencia;
    }

    public void setDireccionresidencia(String direccionresidencia) {
        this.direccionresidencia = direccionresidencia;
    }

    public String getDepartamentoresidencia() {
        return departamentoresidencia;
    }

    public void setDepartamentoresidencia(String departamentoresidencia) {
        this.departamentoresidencia = departamentoresidencia;
    }

    public String getCiudadresidencia() {
        return ciudadresidencia;
    }

    public void setCiudadresidencia(String ciudadresidencia) {
        this.ciudadresidencia = ciudadresidencia;
    }

    public String getRh() {
        return rh;
    }

    public void setRh(String rh) {
        this.rh = rh;
    }

    public Serializable getFoto() {
        return foto;
    }

    public void setFoto(Serializable foto) {
        this.foto = foto;
    }

    public Serializable getHuelladigital() {
        return huelladigital;
    }

    public void setHuelladigital(Serializable huelladigital) {
        this.huelladigital = huelladigital;
    }

    public String getRestriccion() {
        return restriccion;
    }

    public void setRestriccion(String restriccion) {
        this.restriccion = restriccion;
    }

    public String getNumerolicencia() {
        return numerolicencia;
    }

    public void setNumerolicencia(String numerolicencia) {
        this.numerolicencia = numerolicencia;
    }

    public Date getFechaexpedicion() {
        return fechaexpedicion;
    }

    public void setFechaexpedicion(Date fechaexpedicion) {
        this.fechaexpedicion = fechaexpedicion;
    }

    public Date getFechavigencia() {
        return fechavigencia;
    }

    public void setFechavigencia(Date fechavigencia) {
        this.fechavigencia = fechavigencia;
    }

    public String getCentroensenanza() {
        return centroensenanza;
    }

    public void setCentroensenanza(String centroensenanza) {
        this.centroensenanza = centroensenanza;
    }

    public String getCategoria() {
        return categoria;
    }

    public void setCategoria(String categoria) {
        this.categoria = categoria;
    }

    public Date getFechaexpedicionextranjera() {
        return fechaexpedicionextranjera;
    }

    public void setFechaexpedicionextranjera(Date fechaexpedicionextranjera) {
        this.fechaexpedicionextranjera = fechaexpedicionextranjera;
    }

    public String getNumerolicenciaextranjeria() {
        return numerolicenciaextranjeria;
    }

    public void setNumerolicenciaextranjeria(String numerolicenciaextranjeria) {
        this.numerolicenciaextranjeria = numerolicenciaextranjeria;
    }

    public String getNombreconductor() {
        return nombreconductor;
    }

    public void setNombreconductor(String nombreconductor) {
        this.nombreconductor = nombreconductor;
    }

    public String getCedulaextranjeria() {
        return cedulaextranjeria;
    }

    public void setCedulaextranjeria(String cedulaextranjeria) {
        this.cedulaextranjeria = cedulaextranjeria;
    }

    public BigDecimal getId() {
        return id;
    }

    public void setId(BigDecimal id) {
        this.id = id;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof RNC)) {
            return false;
        }
        RNC other = (RNC) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    public RegistroConductoresBO toBO() {
        RegistroConductoresBO bo = new RegistroConductoresBO();
        try{
            bo.setId(id.toString());
        }catch (Exception e){
            e.printStackTrace();
        }
        bo.setApellidos(apellidos);
        bo.setCategoria(categoria);
        bo.setCedulaExtranjeria(cedulaextranjeria);
        bo.setCentroEnseñanza(centroensenanza);
        bo.setCiudadResidencia(ciudadresidencia);
        bo.setDepartamentoResidencia(departamentoresidencia);
        bo.setDireccionResidencia(direccionresidencia);
        bo.setFechaExpedicion(fechaexpedicion);
        bo.setFechaExpedicionExtranjeria(fechaexpedicionextranjera);
        bo.setFechaVigencia(fechavigencia);
        bo.setFehaNacimiento(fechanacimiento);
        bo.setFoto((File)foto);
        bo.setGenero(genero);
        bo.setHuellaDigital((File) huelladigital);
        bo.setNombreConductor(nombreconductor);
        bo.setNombres(nombres);
        bo.setNumeroLicencia(numerolicencia);
        bo.setNumeroIdentificacion(numeroidentificacion);
        bo.setNumeroLicenciaExtranjeria(numerolicenciaextranjeria);
        bo.setRestriccion(restriccion);
        bo.setRh(rh);
        bo.setTelefono(telefono);
        bo.setTipoIdentificacion(tipoidentificacion);
        
        return bo;
    }

    @Override
    public String toString() {
        return "andisoft.uniandes.ecos.runt.persistence.RNC[id=" + id + "]";
    }

}
